package com.yupi.yuapiinterface.controller;
import com.yupi.yuapiclientsdk.model.User;
import com.yupi.yuapiclientsdk.utils.SignUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;

/****
 *   ---- 服务端(接收请求，并校验)----
 *
 * 主要负责处理用户请求并返回响应结果。它的主要作用是：
 *    1、接收和解析用户请求：Controller从前端（如浏览器）接收到请求，并对请求进行解析，获取请求参数、路径等信息。
 *    2、调用业务逻辑处理：Controller将请求参数传递给Service层处理相关业务逻辑，Service层返回处理结果。
 *    3、生成响应结果：Controller将Service层返回的数据组装成响应结果后返回给前端。在生成响应结果时，需要考虑响应结果的格式、数据类型、错误处理等问题。
 *    4、控制页面跳转：如果需要跳转页面，Controller会根据相应的业务逻辑和条件选择跳转页面，并将数据传递给视图层。
 *    5、Controller层的作用是将 《Service层提供的功能》 暴露给前端
 */

//        模拟接口内的的权限校验全部在网关处完成 此处仅实现对 请求 做出 响应


//处理用户请求并返回响应结果
//name api
@Slf4j
@RestController
@RequestMapping("/name")
public class NameController {

    @GetMapping("/")//在请求头中拿ak、sk，无长度限制
    public String getNameByGet(String name,HttpServletRequest request){
        System.out.println(request.getHeader("yupi"));
        return "GET 你的名字是" + name;
    }

    @PostMapping("/")
    public String getNameByPost(@RequestParam String name){
        return "POST 你的名字是" + name;
    }

    @PostMapping("/user")
    public String getUserNameByPost(@RequestBody User user, HttpServletRequest request){

//        此处的权限校验已经在网关完成
        /**
//        String accessKey = request.getHeader("accessKey");
//        String nonce = request.getHeader("nonce");
//        String timestamp = request.getHeader("timestamp");
//        String sign = request.getHeader("sign");
//        String body = request.getHeader("body");
//        //  实际情况是应该去数据库中查是否已分配给用户
//
//        log.info("accessKey======" + accessKey + "结束");
//        if(!accessKey.equals("yupi") ){
//            throw new RuntimeException("无权限");
//        }
//        if(Long.parseLong(nonce) > 10000 ){
//            throw new RuntimeException("无权限");
//        }
////
////        //  时间和当前时间不能超过5min
//////        if(timestamp){}
////
////        //  实际情况是从数据库中查出secretKey
//        String serverSign = SignUtils.genSign(body,"abcdefgh");
//        if(!sign.equals(serverSign)){
//            throw new RuntimeException("================================无权限================================");
//        }

        **/

        String result =  "POST 用户名是" + user.getUsername();
        //调用成功
        return result;
    }
}
